Los observables de tipo subject los podemos utilizar como observables customizados para enviar la información que nosotros queramos
Referencia Angular Ejemplo de códigoPara ejemplificar el uso de subjects usaremos un proyecto de ejemplo con lo siguiente:
En el servicio declaramos el subject y una función que enviará eventos a todos los que estén suscritos al observable que genera el subject:
private messageSubject = new Subject<string>();
messages$ = this.messageSubject.asObservable();
sendMessage(message: string){
this.messageSubject.next(message)
}
En uno de los subcomponentes nos suscribimos al subject:
messageDisplay: string = ""
constructor(
private mySubjectService: MySubjectService
)
{}
ngOnInit(): void {
this.mySubjectService.messages$.subscribe((message) => this.messageDisplay = message)
}
Y en el otro subcomponente usamos la función del servicio para enviar un evento al observable del subject:
constructor(
private mySubjectService: MySubjectService
)
{}
sendMessage(){
this.mySubjectService.sendMessage("holas")
}
En el segundo subcomponente tenemos un botón que llama a la función sendMessage del ts, y en el primer subcomponente en el template se muestra directamente el contenido de la variable messageDisplay.
Angular | subject | observable